package pruebas;

import static org.junit.Assert.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;
import javax.swing.JOptionPane;

import junit.framework.Assert;

import org.junit.Test;

import daos.AutomovilDAO;
import daos.CalificacionDAO;
import daos.ColorDAO;
import daos.MarcaDAO;
import daos.ModeloDAO;
import daos.OfertaDAO;
import daos.PersonaDAO;
import daos.SubastaDAO;
import daos.TipoSubastaDAO;
import daos.UsuarioDAO;
import datos.Automovil;
import datos.Modelo;
import datos.Oferta;
import datos.Subasta;
import datos.TipoSubasta;
import datos.Usuario;
import dtos.ResumenAutomovilModeloDTO;
import dtos.ResumenOfertaDTO;
import dtos.ResumenPersonaDto;
import dtos.ResumenSubastaDTO;

public class PruebaQuery {

	@Test
	public void testUsuariosOfertantes() throws Exception 
	{

		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO) contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		List<Usuario> usuarios= usuarioDAO.usuariosNombre("boka");
		Assert.assertEquals("boka", usuarios.get(0).getNombre());
	
		
		
	}

	@Test
	public void testeUsuarioEmail() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO) contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		Usuario usuario;
		usuario= usuarioDAO.usuarioEmail("boka@...");
		JOptionPane.showMessageDialog(null, usuario.getNombre());
		Assert.assertEquals("boka@...", usuario.getEmail());
	}
	
	@Test
	public void testSubastaPrecio() throws Exception 
	{

		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor1 = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO) contenedor1.getContext().lookup("java:global/proyecto/SubastaDAO");
		List<Subasta> subastas= subastaDAO.subastaPrecio(100);
		Assert.assertEquals(200.0, subastas.get(0).getPrecioBase());
	}
	
	@Test
	public void testOfertaValor() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor1 = EJBContainer.createEJBContainer(properties);
		
		OfertaDAO ofertaDAO;
		ofertaDAO = (OfertaDAO) contenedor1.getContext().lookup("java:global/proyecto/OfertaDAO");
		
		List<Oferta>ofertas=ofertaDAO.ofertaValor(1);
	}
	
	@Test
	public void testColorNombre() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		ColorDAO colorDAO;
		colorDAO = (ColorDAO) contenedor.getContext().lookup("java:global/proyecto/ColorDAO");

		List<String> colores;
		colores=colorDAO.colorNombre();
		
		for (String string : colores) {
			System.out.println(colores);
		}
		
		//		List<ColorNombreDTO>color=colorDAO.colorNombre();
//		
//		for (ColorNombreDTO colorNombreDTO : color) {
//			System.out.println(colorNombreDTO.getColor());
//		}
		
	}
	
	@Test
	public void testResumen() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO) contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");

		List<ResumenPersonaDto>resumenPersonas=usuarioDAO.resumen();
			
		for (ResumenPersonaDto resumenPersonaDto : resumenPersonas) {
			System.out.println(resumenPersonaDto.getNombre()+
					" "+resumenPersonaDto.getEmail()+" "+resumenPersonaDto.getDireccion());
		}
	}
		
	@Test
	public void testAutomovilesMarca() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		AutomovilDAO automovilDAO;
		automovilDAO = (AutomovilDAO)contenedor.getContext().lookup("java:global/proyecto/AutomovilDAO");
		String automoviles;
		automoviles=automovilDAO.automovilesMarca("nnd85b");
		System.out.println(automoviles);

	}
	
	
	
	@Test
	public void testModelosMarca() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		MarcaDAO marcaDAO;
		marcaDAO = (MarcaDAO)contenedor.getContext().lookup("java:global/proyecto/MarcaDAO");
		List<String> modelos=marcaDAO.modelosMarca("mazda");
		
		for (int i = 0; i < modelos.size(); i++) 
		{
			System.out.println(modelos.get(i));
		}
		
	}
	
	@Test
	public void testAutomovilesModelo() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		ModeloDAO modeloDAO;
		modeloDAO = (ModeloDAO)contenedor.getContext().lookup("java:global/proyecto/ModeloDAO");
//		List<String> automoviles=modeloDAO.automovilesModelo("aveo");
//		
//		for (int i = 0; i < automoviles.size(); i++) 
//		{
//			System.out.println(automoviles.get(i));
//		}
		
		List<ResumenAutomovilModeloDTO>resumen=modeloDAO.automovilesModelo("aveo");
		for (ResumenAutomovilModeloDTO resumenAutomovilModeloDTO : resumen) {
			System.out.println(resumenAutomovilModeloDTO.getPlaca());
			System.out.println(resumenAutomovilModeloDTO.getMarca());
			System.out.println(resumenAutomovilModeloDTO.getColor());
		}
		
	}
	
	@Test
	public void testOfertasSubastas() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		String[][] subastas=subastaDAO.OfertasSubastas(253);
		
		for (int i = 0; i < subastas.length; i++) {
			for (int j = 0; j < subastas[0].length; j++) {
				System.out.println(subastas[i][j]);
			}
		}	
	}
	
	@Test
	public void testUsuariosSubastas() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		List<Usuario>usuarios=subastaDAO.UsuariosSubastas();
		
		for (Usuario usuario : usuarios) 
		{
			//System.out.println(usuario.getNombre());
		}
	}
	
	@Test
	public void testsubastaPrecioModelo() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		String[][]subastas=subastaDAO.subastaPrecioModelo(100.0, "323");
		for (int i = 0; i < subastas.length; i++) {
			for (int j = 0; j < subastas[0].length; j++) {
				System.out.println(subastas[i][j]);
			}
		}
		
	}
	
	@Test
	public void testTipoSubasta() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		Subasta subasta=subastaDAO.findByKey(14);
		TipoSubasta tipoSubasta=subastaDAO.tipoSubasta(subasta);
		System.out.println(tipoSubasta.getDescripcion());
	}
	
	@Test
	public void testCorreosEspecificos() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO)contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		List<Usuario>usuarios=usuarioDAO.correosEspecificos("%@gmail.com");
		System.out.println(usuarios.get(0).getNombre());
	}
	
	@Test 
	public void testUsuariosSinCalificacion() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO)contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		List<Usuario>usuarios=usuarioDAO.usuariosSinCalificacion();
		for (Usuario usuario : usuarios)
		{
			System.out.println(usuario.getNombre());
		}
		
	}
	
	@Test
	public void testUsuariosSinTelefonoYDireccion() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO)contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		List<Usuario>usuarios=usuarioDAO.usuariosSinTelefonoYDireccion();
		
		for (Usuario usuario : usuarios)
		{
			System.out.println(usuario.getNombre());
		}
	}
	
	@Test
	public void testAutomovilPorModelo() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO=(SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		List<Automovil>automoviles=subastaDAO.AutomovilPorModelo("aveo","323", "logan");
		for (Automovil automovil : automoviles) 
		{
			System.out.println(automovil.getPlaca());
		}
	}
	
	@Test
	public void testAutosPorPrecio() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		String[][] subastas=subastaDAO.AutosPorPrecio(100.0, 9000000.0);
		
		for (int i = 0; i < subastas.length; i++) {
			for (int j = 0; j < subastas[0].length; j++) {
				System.out.println(subastas[i][j]);
			}
		}
		
//		List<ResumenSubastaDTO>subastas=subastaDAO.AutosPorPrecio(100.0, 6000.0);
//		for (ResumenSubastaDTO resumenSubastaDTO : subastas) {
//			System.out.println(resumenSubastaDTO.getDia()+"/"+resumenSubastaDTO.getMes()+"/"+resumenSubastaDTO.getAnio());
//			System.out.println(resumenSubastaDTO.getMarcaAutomovil());
//		}
		
	}
	@Test
	public void testSubastasUsuario() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		String[][] subastas=subastaDAO.subastasUsuario("1094896315");
		
		for (int i = 0; i < subastas.length; i++) {
			for (int j = 0; j < subastas[0].length; j++) {
				System.out.println(subastas[i][j]);
			}
		}
		
	}
	
	@Test
	public void testOfertasSubasta() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor1 = EJBContainer.createEJBContainer(properties);
		
		OfertaDAO ofertaDAO;
		ofertaDAO = (OfertaDAO) contenedor1.getContext().lookup("java:global/proyecto/OfertaDAO");
		
		String numero=ofertaDAO.ofertasSubasta(123, 11000.0);
		
		System.out.println(numero);
	}
	
	@Test
	public void testOfertaMax() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		String max=subastaDAO.ofertaMax(153);
		System.out.println(max);
		
	}
	
	@Test
	public void testTotalOfertasUsuario() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO)contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		String suma=usuarioDAO.totalOfertasUsuario("123456");
		System.out.println(suma);
	}
	
	@Test
	public void testPromedioOfertasSubasta() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		String prom=subastaDAO.promedioOfertasSubasta(123);
		System.out.println(prom);
		
	}
	
	@Test
	public void testOrdenSubastaPrecio() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		SubastaDAO subastaDAO;
		subastaDAO = (SubastaDAO)contenedor.getContext().lookup("java:global/proyecto/SubastaDAO");
		
		List<Subasta>subastas=subastaDAO.ordenSubastaPrecio();
		
		for (Subasta subasta : subastas) {
			System.out.println(subasta.getPrecioBase());
		}
		
	}
	
	@Test
	public void testPromedioCalificacionUsuario() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		UsuarioDAO usuarioDAO;
		usuarioDAO = (UsuarioDAO)contenedor.getContext().lookup("java:global/proyecto/UsuarioDAO");
		
		List<Usuario>usuarios=usuarioDAO.PromedioCalificacionUsuario();
		
		for (Usuario usuario : usuarios) 
		{
			//System.out.println(usuario.getNombre());
		}
			
	}
	
	@Test
	public void testCalificacionesMayores() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		CalificacionDAO calificacionDAO=(CalificacionDAO)contenedor.getContext().lookup("java:global/proyecto/CalificacionDAO");
		List<Usuario>usuarios=calificacionDAO.CalificacionesMayores();
//		
		for (Usuario usuario : usuarios) {
			usuario.getNombre();
		}
			
	}
	@Test
	public void testOfertasMayorPromedio() throws Exception
	{
		Map properties = new HashMap();
		properties.put(EJBContainer.APP_NAME, "proyecto");
		System.out.println(EJBContainer.APP_NAME);
		EJBContainer contenedor = EJBContainer.createEJBContainer(properties);
		
		OfertaDAO ofertaDAO;
		ofertaDAO = (OfertaDAO)contenedor.getContext().lookup("java:global/proyecto/OfertaDAO");
		
		List<Oferta>ofertas=ofertaDAO.OfertasMayorPromedio(508);
		
		for (Oferta oferta : ofertas) 
		{
			System.out.println(oferta.getIdentificacion());
		}
			
	}
	
}
